<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<head>
	<title>LuaScript Reference</title>
	<link rel="stylesheet" href="../ldoc.css" type="text/css" />
</head>
<body>

<div id="container">

<div id="product">
	<div id="product_logo"></div>
	<div id="product_name"><big><b></b></big></div>
	<div id="product_description"></div>
</div> <!-- id="product" -->


<div id="main">


<!-- Menu -->

<div id="navigation">
<br/>
<h1>LuaScript <sub>v0.12</sub></h1>

<ul>
  <li><a href="../index.html">Index</a></li>
</ul>



<h2>Topics</h2>
<ul class="">
  <li><a href="../topics/callbacks.md.html">Callbacks</a></li>
  <li><strong>External Plugin Support</strong></li>
</ul>
<h2>Classes</h2>
<ul class="nowrap">
  <li><a href="../classes/Editor.html">Editor</a></li>
  <li><a href="../classes/Match.html">Match</a></li>
  <li><a href="../classes/Styler.html">Styler</a></li>
  <li><a href="../classes/Notepad.html">Notepad</a></li>
</ul>
<h2>Examples</h2>
<ul class="nowrap">
  <li><a href="../examples/bookmark.lua.html">bookmark.lua</a></li>
  <li><a href="../examples/highlightoccurrences.lua.html">highlightoccurrences.lua</a></li>
  <li><a href="../examples/luaautoindent.lua.html">luaautoindent.lua</a></li>
  <li><a href="../examples/luasyntaxchecker.lua.html">luasyntaxchecker.lua</a></li>
  <li><a href="../examples/randomizelines.lua.html">randomizelines.lua</a></li>
  <li><a href="../examples/selectionaddnext.lua.html">selectionaddnext.lua</a></li>
  <li><a href="../examples/sessionmanager.lua.html">sessionmanager.lua</a></li>
  <li><a href="../examples/stylecsv.lua.html">stylecsv.lua</a></li>
  <li><a href="../examples/stylecustom.lua.html">stylecustom.lua</a></li>
  <li><a href="../examples/visualstudiolinecopy.lua.html">visualstudiolinecopy.lua</a></li>
</ul>

</div>

<div id="content">


<h1>External Plugin Support</h1>
<p>Plugin developers are able to execute Lua code from their own plugins. Notepad++ provides a mechanism for sending messages between plugins using <code>NPPM_MSGTOPLUGIN</code>.</p>

<p><em>Note: More commands and fields can be added if needed; feel free to open an issue on GitHub.</em></p>

<p><br/></p>

<p>Information needed for LuaScript is defined in the custom struct defined <a href="https://github.com/dail8859/LuaScript/blob/master/src/NppLuaScript.h">here</a>.</p>

<ul>
    <li><code>structVersion</code> - (reserved for future use) must always be <code>1</code></li>
    <li><code>flags</code> - (reserved for future use) must always be <code>0</code></li>
    <li><code>script</code> - UTF-8 encoded string. The meaning of this is dependent on the command executed.</li>
</ul>

<p><br/></p>

<h3>Commands</h3>

<ul>
    <li><code>LS_EXECUTE_SCRIPT</code> - executes a file from the hard drive. <code>script</code> specifies the full file path to execute.</li>
    <li><code>LS_EXECUTE_STATEMENT</code> - executes an arbitrary string. <code>script</code> is the actual Lua code to execute.</li>
</ul>

<p><br/></p>

<h3>Example</h3>
<p>The following is example C code to execute a string.</p>


<pre>
<span class="keyword">void</span> function()
{
    CommunicationInfo ci;
    LuaScriptInfo lsi;

    lsi.structVersion = <span class="number">1</span>;
    lsi.flags = <span class="number">0</span>;
    lsi.script = <span class="string">"for i = 1, 10 do print(i) end"</span>;

    ci.srcModuleName = TEXT(<span class="string">"MyPlugin.dll"</span>);
    ci.internalMsg = LS_EXECUTE_STATEMENT;
    ci.info = reinterpret_cast&lt;<span class="keyword">void</span> *&gt;(&amp;lsi);

    SendMessage(nppHwnd, NPPM_MSGTOPLUGIN, reinterpret_cast&lt;WPARAM&gt;(TEXT(<span class="string">"LuaScript.dll"</span>)), reinterpret_cast&lt;LPARAM&gt;(&amp;ci));
}
</pre>



</div> <!-- id="content" -->
</div> <!-- id="main" -->
<div id="about">
<i>generated by <a href="http://github.com/stevedonovan/LDoc">LDoc 1.4.6</a></i>
</div> <!-- id="about" -->
</div> <!-- id="container" -->
<footer>
	<a href="https://github.com/dail8859/LuaScript"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://camo.githubusercontent.com/a6677b08c955af8400f44c6298f40e7d19cc5b2d/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f677261795f3664366436642e706e67" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_gray_6d6d6d.png"></a>
</footer>
</body>
</html>
